package main

import (
	"fmt"
	"math/rand"
	"time"
)

func main() {
	// 1、打印九九乘法表,要求间隔均匀
	for i := 1; i <= 9; i++ {
		for j := 1; j <= i; j++ {
			fmt.Printf("%d*%d=%d\t", j, i, i*j)
		}
		fmt.Println()
	}

	fmt.Println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")

	// 2、随机生成20以内的20个非0正整数，打印出来。对生成的数值，第单数个（不是索引）累加求和，第偶数个累乘求积，并打印结果
	// 1.20版本之后生成随机数
	sum, product := 0, 1
	for i := 0; i < 20; i++ {
		nums := rand.Intn(20) + 1 // 生成1-20之间的随机数
		fmt.Printf("%d ", nums)   // 打印生成的随机数的值
		if i%2 == 0 {             // 取奇数个的值累加求和
			sum += nums
		} else { // 取偶数个的值累乘求积
			product *= nums
		}
	}
	fmt.Println()
	fmt.Println("第单数个的值累加求和为：", sum)
	fmt.Println("第偶数个的值累乘求积为：", product)

	// 1.20版本之前生成随机数
	src := rand.NewSource(time.Now().UnixNano()) // 利用当前时间的纳秒值来做种子
	r := rand.New(src)                           // 使用源创建随机数生成器
	sum, product = 0, 1
	fmt.Print("生成的随机数为：")
	for i := 0; i < 20; i++ {
		nums := r.Intn(20) + 1
		fmt.Print(nums, " ")
		if i&1 == 0 { // 取奇数个的值累加求和
			sum += nums
		} else { // 取偶数个的值累乘求积
			product *= nums
		}
	}
	fmt.Println()
	fmt.Println("第单数个的值累加求和为：", sum)
	fmt.Println("第偶数个的值累乘求积为：", product)

	fmt.Println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")

	// 3、打印100以内的斐波那契数列
	a, b := 1, 1
	fmt.Print("100以内的斐波那契数列：")
	for a < 100 {
		fmt.Print(a, " ")
		a, b = b, a+b
	}
}

// 批改意见
// 1. 斐波那契数列是从1开始，另外两个题目都完成的很不错。
// 修改斐波那契数列从1开始
